package com.hr.tuling.string;

/**
 * @author zhz
 * @date 2020/11/11
 * 堆栈内存-》面试常问
 **/
public class TestString {
    public static void main(String[] args) {
        String str1 = "abc";
        String str2 = "abc";
        System.out.println(str1 == str2);    //true


//        String str1 = "abc";
//        String str2 = "abc";
//        str1 = "bcd";
//        System.out.println(str1 + "," + str2);    //bcd,abc
//        System.out.println(str1 == str2);        //false 虽然最开始 str1和str2都指向同一个变量abc但str1引用变化后不会改变str2的
//
//        String str1 = "abc";
//        String str2 = "abc";
//        str1 = "bcd";
//        String str3 = str1;
//        System.out.println(str3); //bcd
//        String str4 = "bcd";
//        System.out.println(str1 == str4);    //true
//
//        String str1 = new String("abc");
//        String str2 = "abc";
//        System.out.println(str1 == str2);    //false  new在堆内存中新开了一个对象
//
//        String s1 = "ja";
//        String s2 = "va";
//        String s3 = "java";
//        String s4 = s1 + s2; //java 注意这个+号，java里面重载了+，其实调用了stringBuild，会new对象。
//        System.out.println(s3 == s4);    //false
//        System.out.println(s3.equals(s4));    //true 只是比较值

    }
}
